﻿namespace MicroCloud.Systems
{
    /// <summary>
    /// 系统模块: 字典服务、文件服务
    /// </summary>
    [Description("系统模块")]
    public class SystemsPack : AspPackBase
    {
        #region 属性        
        /// <summary>
        /// 文件配置
        /// </summary>
        protected FileOption FileOption { get; set; }

        /// <summary>
        /// 获取 模块级别，级别越小越先启动
        /// </summary>
        public override PackLevel Level => PackLevel.Business;

        /// <summary>
        /// 获取 模块启动顺序编号，模块启动的顺序先按级别启动，级别内部再按此顺序启动，
        /// 级别默认为0，表示无依赖，需要在同级别有依赖顺序的时候，再重写为>0的顺序值
        /// </summary>
        public override int OrderNo => 0;

        #endregion

        #region 方法
        /// <summary>
        /// 将模块服务添加到依赖注入服务容器中
        /// </summary>
        /// <param name="services">依赖注入服务容器</param>
        /// <returns></returns>
        public override IServiceCollection AddServices(IServiceCollection services)
        {
            //添加字典服务            
            services.AddDict();

            //添加文件服务
            FileOption = services.GetConfiguration().GetFileOption();
            services.AddFile(FileOption);

            return services;
        }

        /// <summary>
        /// 应用AspNetCore的服务业务
        /// </summary>
        /// <param name="app">应用程序</param>
        public override void UsePack(WebApplication app)
        {
            //启用字典服务
            app.UseDict();

            //启用文件服务
            app.UseFile(FileOption);

            IsEnabled = true;
        }
       
        #endregion

    }
}
